System and method for managing dynamic document references

ABSTRACT

Document fragments are managed by the use of fragment objects. Fragment objects contain a reference to a portion of a source document. Referencing documents contain a reference to a fragment object which delivers the content of the fragment of the source document to the referencing document. The source document can be directly updated through updating the fragment of the source document contained in the referencing document via the use of the fragment object. Source document deletion is controlled by storing the references to the source document by fragment objects so that no fragment object has a reference to a nonexistent source document. A process for organizing document fragments within a document management system wherein source documents comprise duplicates of the document fragments includes replacing a duplicate fragment with a reference to a single fragment object the fragment object including a reference to a fragment of a source document and an object class method for deletion of the fragment object including instructions to remove the reference to the fragment object from the metadata of the source document to which the fragment object refers.

PRIORITY INFORMATION

The present application claims priority, under 35 U.S.C. §119(e), fromU.S. Provisional Patent Application Ser. No. 60/753,051, filed on Dec.22, 2005. The entire content of U.S. Provisional Patent Application Ser.No. 60/753,051, filed on Dec. 22, 2005, is hereby incorporated byreference.

BACKGROUND

A document is a conventional unit of information exchange. Thedevelopment of electronic documents has increased the ease andflexibility with which documents can be altered, separated, andreorganized. Documents in electronic form can contain references toother electronic documents or parts of other electronic documents.Unlike conventional printed documents, an electronic document with areference to another electronic document carries the possibility of newapplications involving the dynamic lookup of the content of otherdocuments.

Standards such as Extensible Markup Language, Extensible Markup LanguagePointer, and Extensible Markup Language Inclusions are examples of toolsthat can be used to implement a system of managing dynamic documentreferences. The possibility of embedding, within a document, dynamicreferences to other documents enables the concept of managing a set ofdocuments as a set of document fragments. The document fragments can bereferenced directly instead of indirectly by first traversing areference to the full document that originally contained the fragment.The full document that originally contained the fragment can itself bereferenced directly or indirectly.

Conventionally, document components can be managed directly, like smalldocuments. In these conventional systems documents are stored assections.

It has long been possible to specify portions or fragments of simpletext documents where a fragment can be specified by a file offset andsize, but now there are mechanisms for specifying fragments ofstructured documents. An example is the Extensible Markup LanguagePointer standard that can reference portions of an Extensible MarkupLanguage encoded document. Furthermore, there are standards such asExtensible Markup Language Inclusions that allow fragments of documentsto be inserted into other documents.

Document fragments then, are becoming the new unit of information.Document fragments provide the capability of reuse of information andcontent. Document fragments allow documents to be dynamic; when theinformation in the source document is updated or changed, those changesare seen in all the documents that include the altered fragments.However, the infrastructure to deal with componentized documents anddocument fragments is still being developed.

For example, an identified fragment may be particularly useful forinclusion in multiple documents. It would then be desirable to have themeans to find a previous definition of that fragment and copy or pastethat fragment into the new document. Other examples include: organizingfragments for better management and identification, associating metadatawith a document fragment extending the use of fragments beyond theExtensible Markup Language document world, propagating changes fromdocument fragments back to the source document and managing referencesto deleted source documents.

Furthermore, it is desirable to have the ability to perform theabove-mentioned tasks even if the user only has read access to thesource documents of the document fragments.

It may be desirable to include the referenced document fragment in aform or format that is different from its form in the original sourcedocument. One example is translation into another language. Anotherexample is change of display font or printer font. Another example issummarization where a lengthy fragment of a document is transformed sothat only a summary appears in the referencing document.

It may be desirable to edit or revise a document including thereferenced text of a document fragment. One way to make the revision isby making a copy of the referenced content and editing the copy. Butthis approach sacrifices the ability to dynamically maintain consistencywith the source document.

Updating of all references to the source document is also necessary todynamically maintain consistency with the source document when changesto a referenced fragment must be propagated back to the source document.A reference must describe both the location and scope of the referencedcontent, but editing the content could alter its size and scope. Thismight mean having to revise all references to the inserted content, eventhough these can occur in documents that the editor is unaware of. Anadditional problem is determining how to know what the boundary isbetween the revised referenced content and the revised referencingdocument after editing has taken place.

What is needed is the ability to more flexibly propagate changes back toa source document from a document fragment that is coupled to the sourcedocument only by the use of a reference within a referencing document.

Documents can include portions of other documents by reference. If,however, the referenced document is deleted, the reference is leftdangling. What is needed is a means to tell if a document is referencedin order to know if it is safe to delete the document, or a means torevise references so that the references reference something other thanthe deleted object.

A document may include content with a variety of access sensitivities.Some parts of the document may be suitable for general access, whileother portions will need to have the access restricted. One way toimpose the restriction is by encryption. Once a document is encrypted,the document can conventionally be made available without much concernor reservation since only a select group of users can decrypt thedocument. However, it may be desirable to be able to select and use lesssensitive portions of the document in other documents with lessrestrictive access, while other portions will need to have the accessrestricted. It is possible to employ several encryptions within thedocument, but this would be inconvenient to the viewer. To access thedocument as a whole, the most restrictive rules must prevail.

A document repository may contain legacy documents where content hasbeen shared by copy and paste editing. It would be desirable to be ableto automatically identify these common content elements so that thecommon content elements might be replaced with a document or documentfragment reference.

Therefore, it is desirable to provide a system and method for managingdocument fragments that overcome the above-mentioned difficulties.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings are only for purposes of illustrating an embodiment and isnot to be construed as limiting, wherein:

FIG. 1 is a block diagram illustrating the system described herein;

FIG. 2 is a block diagram illustrating a result of a process fororganizing document fragments within a document management system;

FIG. 3 is a flowchart describing a process for retrieving a documentfragment;

FIG. 4 is a flowchart describing a process for updating a sourcedocument;

FIG. 5 is a flowchart describing a process for deleting a sourcedocument;

FIG. 6 is a flowchart describing a process for organizing documentfragments within a document management system;

FIG. 7 is a flowchart describing a process for creating a fragmentobject;

FIG. 8 is a flowchart describing a process for causing a referencingdocument to reference a document fragment; and

FIG. 9 is a block diagram illustrating a possible scenario for the useof encryption.

DETAILED DESCRIPTION

For a general understanding, reference is made to the drawings. In thedrawings, like references have been used throughout to designateidentical or equivalent elements. It is also noted that the drawings maynot have been drawn to scale and that certain regions may have beenpurposely drawn disproportionately so that the features and conceptscould be properly illustrated.

According to aspects illustrated herein, there is provided a system formanaging documents and document fragments including: a digital computersystem, a source document, a referencing document, an object repositoryoperatively coupled to the computer system and a fragment objectoperatively coupled to the object repository. The fragment objectincludes: a reference to a fragment of a source document and an objectclass method for deletion of the fragment object the object class methodincluding instructions to remove the reference to the fragment objectfrom the metadata of the source document to which the fragment objectrefers. The digital computer system includes: a central processing unit,a random access memory, a persistent media memory an input device and anoutput device. The object repository includes: the metadata of a sourcedocument and a library of executable object class methods.

According to aspects illustrated herein, there is further provided aprocess for retrieving document fragments including: accessing areferencing document, requesting a document fragment from a fragmentobject, and accessing a fragment of a source document. According toaspects illustrated herein, there is further provided a process forupdating a source document including: retrieving a referencing document,accessing a fragment object, identifying the content of the sourcedocument associated with the fragment object, editing the content fromthe source document associated with the fragment object, invoking thefragment object to update the source document and updating the sourcedocument according to the edit of the fragment of the source documentassociated with the fragment object.

According to aspects illustrated herein, there is further provided aprocess for deleting a source document including: requesting thedeletion of a source document from a document management system andexamining the metadata of the source document to determine whether thesource document is referenced by a fragment object.

According to aspects illustrated herein, there is further provided aprocess for organizing document fragments within a document managementsystem wherein source documents include duplicates of the documentfragments the process including: identifying a structurally distinctfragment of a document, computing the checksum of a structurallydistinct fragment of a document, identifying a set of duplicate documentfragments and replacing a duplicate fragment with a reference to asingle fragment object.

According to aspects illustrated herein, there is further provided aprocess for creating a fragment object including: invoking the creationof a fragment object from an object repository, accessing a sourcedocument, using information obtained from the user to generate areference to a fragment of the source document in the data of thefragment object updating the metadata of the source document to recordthe new reference to the source document and storing the data of thefragment object in a document management system.

According to aspects illustrated herein, there is further provided aprocess for causing a referencing document to reference a documentfragment including: selecting a document fragment from a documentmanagement system and adding a reference to a fragment object referringto the selected document fragment to the referencing document.

In reference now to FIG. 1, a block diagram illustrating a system formanaging document fragments is shown. A digital computer 195 includes anobject repository 100, a source document 120 and a referencing document110. An object repository 100 includes the metadata 140 of a sourcedocument 120. The object repository 100 also includes a fragment object130 that contains a combined reference 180 to the metadata 140 of asource document 120 and a fragment 150 of the source document 120. It isnoted that the source document 120 need not physically reside within theobject repository 100, since the metadata 140 of the source document 120provides sufficient information to access the source document 120. Thefragment object 130 references a fragment 150 of the source document 120utilizing a reference 180 the metadata 140 of the source document 120.The metadata of the source document includes a reference 190 to thesource document itself.

It is noted that the fragment object 130 may include an object classmethod for encrypting and decrypting document data. An object classmethod for encryption or decryption of document data allows the user toaccess encrypted source document data. Such an object class method wouldalso allow the data of the fragment object itself to be encrypted anddecrypted. An object class method for encryption or decryption will alsoallow the encryption of entire source documents and parts of sourcedocuments.

A referencing document 110 includes a reference 170 to a fragment object130. The fragment object 130 provides to the referencing document 110the content 160 of the document fragment 150. It is noted that thefragment object 130 may include an object class method to transform thedata of the source document. This would allow the original sourcedocument data to be presented in a different form in the referencingdocument than the form in the original source document. An object classmethod for changing the form of the source document data may allow, forexample, changing of the display font or printer font, translation intoanother language or may allow summary of content. It is noted that manyother features and functions or alternatives thereof may be implementedin an object class method to change the original form of the sourcedocument data which are also intended to be encompassed herein.

The fragment object 130 may also include an object class method forenforcing digital access rights. An object class method for enforcingdigital access rights may deny access to a document fragment, thefragment object or the source document depending on the rights assignedto the user. It is noted that object class methods for enforcing digitalaccess rights and for encrypting and decrypting document data can beused together to implement a document data security policy. Methods ofuser identification and enforcement of digital access rights, along withalgorithms for encryption and decryption are known to those skilled inthe art and will not be discussed in detail here.

The fragment object 130 may also include an object class method forutilizing an Extensible Markup Language encoded document. Such an objectclass method would enable the use of the Extensible Markup LanguagePointer standard that can reference portions of an Extensible MarkupLanguage encoded document. An object class method for utilizingExtensible Markup Language would also enable the use of ExtensibleMarkup Language Inclusions; which allows fragments of documents to beinserted in other documents.

It is noted that the fragment object 130 herein disclosed may also beused with documents that are not encoded in Extensible Markup Language.

A process for retrieving document fragments 150 within a referencingdocument 110 includes accessing a referencing document 110. It is notedthat a referencing document may be accessed by a conventional documenteditor. Conventional document editors such as Microsoft Word® arecapable of invoking objects such as the fragment object 130 hereindisclosed.

Further, the process for retrieving document fragments 150 within areferencing document 110 includes requesting a document fragment from afragment object 130. When the fragment object 130 is invoked with arequest to display the document fragment 150, the metadata 140 of thesource document 120 is examined and the source document 120 is accessed.The fragment 150 of the source document 120 that is defined by thefragment object 130 is accessed and copied into the referencing document110 to be displayed therein.

It is noted that retrieval of the document fragment may includetransforming the data of the document fragment from its native format asdescribed above. Retrieval of the document fragment may also includedecrypting the data of the document fragment as described above if thatdata is encrypted. Retrieval of the document fragment may also includeenforcing digital access rights as described above.

A process for updating a source document 120 includes retrieving areferencing document 110 as described above. The process furtherincludes accessing a fragment object 130 from within a referencingdocument 110 as described above. The content of the document fragment150 that is displayed within the referencing document 110 is identifiedin the referencing document 110 by its position or other conventionalmeans. The process further includes editing the content of the documentfragment 160 within the referencing document 110.

Further, the process for updating a source document 120 includesinvoking the fragment object 130 with a request to update the sourcedocument 120 according to the edit of the fragment 160 of the sourcedocument. When the fragment object 130 receives the request, thefragment object modifies the fragment 150 of the source document 120associated with the fragment object 130. It is noted that once thesource document 120 is modified, the fragment object 130 will refer tothe modified fragment 150. Therefore, all referencing documents 110 thatrefer to the fragment object 130 will automatically refer to themodified fragment 150.

Since the size of the fragment 150 may be changed by the edit, thefragment object 130 must not use the conventional position and offsetmethod of identifying the fragment 150. Rather, the fragment 150 must beidentified in a way that focuses as directly as possible on thesemantics of what is being sought, such as a reference to a numberedparagraph or a labeled section of a document such as a preamble.

A process for deleting a source document 120 includes requesting thedeletion of a source document 120 from the object repository 100 thatincludes the metadata of the source document. It is noted that anyconventional means may be used to invoke the appropriate object classmethod of the object repository 100 to initiate a source documentdeletion request.

Further, the process for deleting a source document 120 includesexamining the metadata 140 of the source document 120 to determinewhether the source document 120 is referenced by a fragment object 130.It is noted that when a fragment object 130 is created within the objectrepository 100, the metadata 140 of the source document 120 to which thefragment object 130 refers is updated to record the new reference 180 tothe source document 120. It is also noted that when a fragment object130 is deleted, the metadata 140 of the source document 120 to which thefragment object 130 refers is updated to record the removal of thereference 180.

If, through examining the metadata of the source document, it isdetermined that the source document 120 being deleted still has fragmentobjects 130 referring to the source document, it is possible to postponethe deletion of the source document 120 until all references 180 to thesource document 120 from a fragment object 130 are first deleted.Marking the source document 120 for future deletion allows thispostponement to take place. Marking the source document 120 for futuredeletion also allows the referencing fragment objects 130 to determinethat the source document 120 is marked for future deletion. Depending onthe use or the environment of the referencing document 110, the user ofthe referencing document 110 may wish to see whether the source document120 is marked for future deletion.

Further, the process for deleting a source document 120 may includephysically deleting the source document 120. It is noted that physicallydeleting the source document 120 is not necessary to remove the data ofthe source document from the referencing fragment objects. Since afragment object 130 references the source document 120 through themetadata 140 of the source document 120, only the metadata 140 of thesource document 120 need be marked as deleted. However, the physicaldeletion of the source document 120 along with physical deletion of themetadata 140 of the source document may also be included in the process.

Further, the process for deleting a source document 120 may includemarking a fragment object 130 that refers to the source document 120 tosignify that the source document 120 is deleted. It is noted that if themetadata 140 of the source document 120 is marked as deleted, it is notnecessary to also mark the fragment object 130. However, if the metadata140 of the source document 120 is physically deleted, such a markingwould be necessary if the user of the document fragment 150 wished toknow positively whether the source document 120 was deleted. It wouldnot be enough to simply allow a dangling reference to a documentfragment to persist.

Further, the process for deleting a source document 120 may includecopying the actual document data of a fragment referenced by fragmentobject 130 into the data of the fragment object 130 itself. This willallow the source document 120 to be deleted while a reference to afragment of that source document is still maintained by preserving thedata of the fragment of the source document 120 that is referenced bythe fragment object 130. Copying the actual document data 150 of adocument fragment into a fragment object 130 allows the source document120 to be deleted transparently such that all referencing documents 110that refer to fragments 150 of the source document 120 are virtuallyunaffected.

A process for organizing document fragments includes identifying astructurally distinct fragment 150 of a document 120. Further, theprocess for organizing document fragments includes computing a checksumfor each fragment so identified. The checksum enables the fragments tobe segregated into groups that are natural candidates for beingidentical. The members of each group so identified can be compared witheach other to determine if the members of the group are indeedidentical.

A process for creating a fragment object 130 includes invoking thecreation of a fragment object 130 from an object repository. It is notedthat any conventional means may be used to invoke the appropriate objectclass method of the object repository 100 to initiate the creation of afragment object. The object class method for creating the fragmentobject is utilized to access a source document 120. Information obtainedfrom the user is used to generate a reference 180 to a fragment 150 ofthe source document 120 in the data of the fragment object 130.

The process further includes updating the metadata 140 of the sourcedocument 120 to record the new reference 180. The metadata 140 may beupdated by simply incrementing a reference count. The metadata 140 mayalso be updated by adding a reference to the fragment object 130 to themetadata 140 of the source object 120. It is noted that variouspresently unforeseen or unanticipated alternative means for updating themetadata may be devised by those skilled in the art and are alsointended to be encompassed herein.

The process further includes storing the data of the fragment object 130in the object repository 100 of the document management system.

A process for causing a referencing document 110 to reference a documentfragment 150 includes selecting a document fragment 150 from a documentmanagement system. It is noted that any conventional means may be usedto invoke the appropriate object class method of the object repository100 to initiate a document fragment selection dialog. It is noted that areferencing document may be accessed by a conventional document editor.Conventional document editors are capable of invoking object classmethods such as the fragment selection dialog 130 herein disclosed. Thefragment selection dialog will conclude with the incorporation of areference 170 to a fragment object 130 into the referencing document110.

In reference now to FIG. 2, a result of the process for organizingdocument fragments within a document management system is illustrated.Situation 210 illustrates four source documents 120 each containing afragment 150 where each of the fragments is identical. Situation 220illustrates the same four documents 110, 120. Three of the documents 110have the identical fragment replaced with a reference 170 to a fragmentobject 130. The fragment object 130 in turn contains a reference to afragment 150 of the fourth document 120 which has now become a sourcedocument 120. The other documents 110 have now become referencingdocuments 110. Situation 220 allows greater space efficiency, especiallyas the document fragment 150 may be large. Situation 220 also allowsgreater control of content since all changes to the document fragment150 will automatically be propagated to all referencing documents 110 aswell as other documents that may later reference the document fragment150.

In reference now to FIG. 3, a flowchart describing a process forretrieving a document fragment is illustrated. At Step S310 areferencing document is accessed. It is noted that any conventionalmeans for accessing a referencing document may be used. At Step S320 thefragment object is invoked with a request to display the documentfragment to which the fragment object refers. It is noted that each timea referencing document is displayed; the fragment object may be invokedin this way.

At Step S330 the fragment object displays the data of the documentfragment. It is noted that displaying the document fragment may includetransforming the data of the document fragment from its native format asdescribed above. Displaying the document fragment may also includedecrypting the data of the document fragment as described above if thatdata is encrypted. Retrieval of the document fragment may also includeenforcing digital access rights as described above.

In reference now to FIG. 4, a flowchart describing a process forupdating a source document is illustrated. At Step S410 a referencingdocument is accessed. It is noted that any conventional means foraccessing a referencing document may be used. At Step S420 then, afragment object, which is referenced in the referencing document, isaccessed.

It is noted that accessing the fragment object may include transformingthe data of the document fragment from its native format as describedabove. Accessing the fragment object may also include decrypting thedata of the document fragment as described above if that data isencrypted. Accessing the fragment object may also include enforcingdigital access rights as described above.

At Step S430 source document content to be edited that is provided bythe fragment object is distinguished from the content of the referencingdocument. It is noted that any conventional means to distinguish sourcedocument content from referencing document content may be used such asinserting invisible tokens into the referencing document.

At Step S440 the content of the source document presented by thefragment object in the referencing document is edited. At Step S450 thefragment object is invoked with a request to update the content of thesource document. It is noted that the fragment object may be invoked byany conventional means. The fragment object may be invoked automaticallywhenever the document editor performs a “save” of the referencingdocument. The fragment object may be invoked upon closure of thereferencing document.

At Step S460 the fragment object updates the portion of the sourcedocument to which the fragment object refers according to the editperformed in Step S440. It is noted that updating the source documentmay include decrypting the data if the data of the source document isencrypted. Updating the source document may also include transformingthe data back to its native form if the data of the source document wastransformed by the fragment object for inclusion in the referencingdocument. Updating the source document may also include enforcingdigital access rights. For example, if the user of the referencingdocument has read permission but not write permission, the edit would berejected.

In reference now to FIG. 5, a flowchart describing a process fordeleting a source document is illustrated. At Step S510 a documentmanagement system is invoked with a request to delete a source document.It is noted that the document management system may be invoked by anyconventional means including accessing the source document in a documenteditor and requesting its deletion. Another conventional means ofrequesting the deletion of a source document is to use a deletioncommand from a file management system. At Step S520 the metadata of thesource document is examined to determine whether the source document isreferenced by a fragment object. It is noted that regardless of themeans used to request deletion of the source document, an examination ofthe metadata of the source document will take place as a result.

In order to solve the problem of “dangling references” as describedabove, actual physical deletion of a source document or the metadata ofthe source document will not take place until a decision regardingexisting references can be made. The decision may be automated inseveral ways. One way to automate the decision is to mark the metadataof the source document for future deletion. This will enable existingreferences to continue to retrieve data from the source document untilsuch time as all such references are themselves first deleted. Anotherway to automate the decision is to mark the metadata of the sourcedocument to show that the source document is deleted. This would allowthe fragment object to positively report the deletion of the sourcedocument when invoked. Still another way to automate the decision is tocopy the data of the source document that is referenced by each of thefragment objects that reference the source document to each of thosefragment objects that reference the source document. Then, it would besafe to delete the source document because the fragment object no longerneeds the source document to deliver data when the fragment object isinvoked.

At Step S530, an automated decision based on the existence of referencesto the source document is taken. If there are no existing references tothe source document, control passes to Step S540. At Step S540, thesource document is physically deleted. It is noted that Step S540 mayalso include the physical deletion of the metadata of the sourcedocument since there are no existing references. At Step S540 theprocess is complete.

If there are existing references to the source document, control passesto Step S550. At Step S550, the metadata of the source document may bemarked for future deletion or marked as deleted as described above.Also, at Step S550, the source document data that is referenced by thefragment objects may be copied into the data of the fragment objectsthemselves, in preparation for the physical deletion of the sourcedocument. Copying data into the fragment objects eliminates the need fora reference to the source document, therefore, the fragment object is nolonger considered to be referencing the source document, once the sourcedocument's data is copied into the fragment object.

At Step S560, the metadata of the source document is once again examinedand if, at this point there are no references to the source documentexisting in any fragment objects, the source document can be physicallydeleted. If there are no existing references in a fragment object to thesource document, control passes back to Step S540. It is noted that, atStep S540, the source document is physically deleted. The metadata ofthe source document may also be deleted at Step S540. If there are stillreferences to the source document in existence at the Step S560, theprocess is complete.

In reference now to FIG. 6, a flowchart describing a process fororganizing document fragments within a document management system isillustrated. At Step S610, a structurally distinct fragment of adocument is identified. Such a structurally distinct fragment may beidentified by any conventional means such as Extensible Markup Languageencoding, Hypertext Markup Language encoding or a file positiontemplate.

At Step S620, the checksum of each structurally distinct fragment of anobject identified in Step S610 is computed. It is noted that thechecksums computed at Step S620 are indexed to the particular documentfragments to which the checksums refer.

At Step S630, a set of duplicate fragment objects is identified usingthe checksums computed at Step S620 as a starting point. If twochecksums are not identical then the fragments the checksums representare definitely not identical. If two checksums are identical, then thetwo fragments must be compared byte by byte to determine if the twofragments are identical.

At Step S640, all but one of documents containing duplicate fragmentsare changed from source documents to referencing documents. Also, afragment object is created with a reference to the fragment as thefragment still exists in one of the documents. The other documents thatwere changed to referencing documents now contain a reference to the newfragment object.

In reference now to FIG. 7, a flowchart describing a process forcreating a fragment object is illustrated. At Step S710, the creation ofa fragment object is invoked from an object repository. It is noted thatany conventional means may be used to invoke the creation of a fragmentobject.

At Step S720, information obtained from the user is used to select asource document from which a reference to a fragment thereof will bebuilt. It is noted that any conventional means may be used to select thesource document such as a file management system.

At Step S730, information obtained from the user is used to build areference to a fragment of the source document. It is noted that anyconventional means may be used to select the part of the document thatwill be the referenced fragment such as selecting text or selectingspecific labeled sections of a document through a document editor.

At Step S740, the metadata of the source document is update. Themetadata may be updated by simply incrementing a reference count. Themetadata may also be updated by adding a reference to the fragmentobject to the metadata of the source object. It is noted that variouspresently unforeseen or unanticipated alternative means for updating themetadata may be devised by those skilled in the art and are alsointended to be encompassed herein.

At Step S750 the data of the fragment object is stored in a documentmanagement system. The purpose of storing the fragment object is toenable the fragment object to persist so that the fragment object may beused until such time as the fragment object is no longer needed.

In reference now to FIG. 8 a flowchart describing the process forcausing a referencing document to reference a document fragment isillustrated. At Step S810 a document fragment is selected from adocument management system. It is noted that any conventional means forselecting a document fragment may be used including a file managementsystem wherein the stored data of the document fragment may be selected.

At Step S820 a reference to the document fragment is added to thereferencing document. It is noted that any conventional means forincorporating a reference to the fragment object into a referencingdocument may be used.

In reference now to FIG. 9, a block diagram depicting a possiblescenario for the use of encryption is illustrated. Access control ofdocuments and document fragments can be managed by controlling theencryption and decryption keys available to the users. An encryptedfragment object 930 is accessed by a user supplying a decryption key 950available to that user. The encrypted fragment object 930 refers to afragment 920 an encrypted source document 910. The encrypted fragmentobject 930 in turn uses its decryption key 940 to decrypt the fragment920 encrypted source document 910. The encrypted fragment object 930 isthen able to present the document fragment 920 to the user in anunencrypted form.

It is noted that an encryption algorithm or a decryption algorithm canbe applied to a source document 910 or a fragment object 930. Further,if a decryption algorithm is applied to a source document 910 orfragment object 930 and the source document 910 or the fragment object930 was not first encrypted, the decryption algorithm will return theunencrypted source document 910 or fragment object 930.

It is further noted that an encryption algorithm may be applied to asource document 910 or a fragment object 930 with a result that thesource document 910 or fragment object 930 remains unencrypted becausean identity encryption key is supplied that causes no encryption to takeplace. Making only an identity encryption key available to a user is away to prevent unauthorized encryption of a document or a fragmentobject.

In summary, a method may generate a document by accessing a referencingdocument; invoking a fragment object referenced by the referencingdocument, the fragment object including a first set of datacorresponding to a document fragment of a source document and a secondset of data corresponding to a transformation of the document fragmentof the source document; transforming the document fragment of the sourcedocument based on the second set of data; and incorporating thetransformed data into the referencing document to generate a document.

The method may also generate a document by accessing a referencingdocument; invoking a fragment object referenced by the referencingdocument, the fragment object including a first set of datacorresponding to a document fragment of a source document and a secondset of data corresponding to a transformation of the document fragmentof the source document; determining the format of the referencingdocument based on the second set of data; transforming the documentfragment of the source document to correspond to the determined formatof the referencing document; and incorporating the transformed documentfragment of the source document into the referencing document togenerate a document.

The method may further generate a document by accessing a referencingdocument; invoking a fragment object referenced by the referencingdocument, the fragment object including a first set of datacorresponding to a document fragment of a source document, the fragmentobject including a second set of data corresponding to access to thedocument fragment of the source document; determining access credentialsof a user; comparing the access credentials of the user with accesscriteria data in the second set of data corresponding to access to thedocument fragment of the source document; and incorporating the documentfragment into the referencing document.

The fragment object may include a third set of data corresponding to atransformation of the document fragment of the source document such thatthe document fragment of the source document is transformed based on thethird set of data when it is determined that the access credentials ofthe user correspond to access criteria data in the second set of datacorresponding to access to the document fragment of the source documentand the transformed document fragment is incorporated into thereferencing document.

The method may further generate a document by accessing a referencingdocument; invoking a fragment object referenced by the referencingdocument, the fragment object including a first set of datacorresponding to a document fragment of a source document, the fragmentobject including a second set of data corresponding to access to thedocument fragment of the source document; determining access credentialsof a user; comparing the access credentials of the user with accesscriteria data in the second set of data corresponding to access to thedocument fragment of the source document; encrypting the documentfragment of the source document when it is determined that the accesscredentials of the user fail to correspond to access criteria data inthe second set of data corresponding to access to the document fragmentof the source document; incorporating the document fragment into thereferencing document when it is determined that the access credentialsof the user correspond to access criteria data in the second set of datacorresponding to access to the document fragment of the source documentto generate a document; and incorporating the encrypted documentfragment into the referencing document when it is determined that theaccess credentials of the user fail to correspond to access criteriadata in the second set of data corresponding to access to the documentfragment of the source document to generate a document.

The fragment object may include a third set of data corresponding to atransformation of the document fragment of the source document such thatthe document fragment of the source document is transformed based on thethird set of data when it is determined that the access credentials ofthe user correspond to access criteria data in the second set of datacorresponding to access to the document fragment of the source document;the transformed document fragment of the source document is encryptedwhen it is determined that the access credentials of the user fail tocorrespond to access criteria data in the second set of datacorresponding to access to the document fragment of the source document;the transformed document fragment is incorporated into the referencingdocument when it is determined that the access credentials of the usercorrespond to access criteria data in the second set of datacorresponding to access to the document fragment of the source documentto generate a document; and the encrypted transformed document fragmentis incorporated into the referencing document when it is determined thatthe access credentials of the user fail to correspond to access criteriadata in the second set of data corresponding to access to the documentfragment of the source document to generate a document.

A method may update a document fragment based upon changes in anotherdocument by accessing a referencing document; invoking a fragment objectreferenced by the referencing document, the fragment object including afirst set of data corresponding to a document fragment of a sourcedocument; incorporating data from the document fragment into thereferencing document to generate a document; changing the incorporateddata of the document; invoking a fragment object referenced by thereferencing document when the incorporated data of the document ischanged; and modifying the document fragment of the source document tocorrespond to the change in the incorporated data of the document.

A method may also update a document fragment based upon changes inanother document by accessing a referencing document; invoking afragment object referenced by the referencing document, the fragmentobject including a first set of data corresponding to a documentfragment of a source document, the fragment object including a secondset of data corresponding to access to the document fragment of thesource document; incorporating data of the document fragment into thereferencing document to generate a document; changing the incorporateddata of the document; determining access credentials of a user;comparing the access credentials of the user with access criteria datain the second set of data corresponding to access to the documentfragment of the source document; invoking a fragment object referencedby the referencing document when the incorporated data of the documentis changed and when it is determined that the access credentials of theuser correspond to access criteria data in the second set of datacorresponding to access to the document fragment of the source document;and modifying the document fragment of the source document to correspondto the change in the incorporated data of the document when it isdetermined that the access credentials of the user correspond to accesscriteria data in the second set of data corresponding to access to thedocument fragment of the source document.

A method may further update a document fragment based upon changes inanother document by accessing a referencing document; invoking afragment object referenced by the referencing document, the fragmentobject including a first set of data corresponding to a documentfragment of a source document; incorporating data of the documentfragment into the referencing document to generate a document; changingthe incorporated data of the document; and modifying fragment objectreferenced by the referencing document to include a second set of data,the second set of data corresponding to the change in the incorporateddata of the document.

A method may also generate a document by accessing a referencingdocument; invoking a fragment object referenced by the referencingdocument, the fragment object including a first set of datacorresponding to a document fragment of a source document, the fragmentobject including a second set of data corresponding to access to thedocument fragment of the source document; incorporating data of thedocument fragment into the referencing document to generate a document;changing the incorporated data of the document; determining accesscredentials of a user; comparing the access credentials of the user withaccess criteria data in the second set of data corresponding to accessto the document fragment of the source document; and modifying fragmentobject referenced by the referencing document to include a third set ofdata, the third set of data corresponding to the change in theincorporated data of the document when it is determined that the accesscredentials of the user correspond to access criteria data in the secondset of data corresponding to access to the document fragment of thesource document.

A method may preserve data associated with a document fragment of adocument to be deleted by determining if a document is to be deletedincludes a document fragment referenced by a fragment object, thefragment object including a first set of data corresponding to adocument fragment of the document to be deleted and a second set of datacorresponding to a transformation of the document fragment of thedocument to be deleted; replacing, in the fragment object, the first setof data corresponding to a document fragment of the document to bedeleted with actual data of the document fragment of the document to bedeleted when it is determined that the document to be deleted includes adocument fragment referenced by a fragment object; and deleting thedocument to be deleted after the first set of data, in the fragmentobject, corresponding to a document fragment of the document to bedeleted is replaced with the actual data of the document fragment of thedocument to be deleted.

A method may also preserve data associated with a document fragment of adocument to be deleted by determining if a document is to be deletedincludes a document fragment referenced by a fragment object, thefragment object including a first set of data corresponding to adocument fragment of the document to be deleted and a second set of datacorresponding to a transformation of the document fragment of thedocument to be deleted; copying actual data of the document fragment ofthe document to be deleted to a second document when it is determinedthat the document to be deleted includes a document fragment referencedby a fragment object; and replacing, in the fragment object, the firstset of data corresponding to a document fragment of the document to bedeleted with a reference to the document fragment of the seconddocument.

A method may organize document fragments within a set of documents byidentifying a first document fragment of a first document; identifying asecond document fragment within the set of documents that is identicalto the first document fragment of the first document; determining, froma set of fragment objects, whether one of the set of fragment objectshas a set of data corresponding to the first document fragment of thefirst document; creating a new fragment object having a set of datacorresponding to the first document fragment of the first document whenit is determined that no fragment objects within the set of fragmentobjects have a set of data corresponding to the first document fragmentof the first document; replacing the second document fragment with areference to the created fragment object when it is determined that nofragment objects within the set of fragment objects have a set of datacorresponding to the first document fragment of the first document; andstoring the created fragment object in a memory device.

A method may also organize document fragments within a set of documentsby identifying a first document fragment of a first document;identifying a second document fragment within the set of documents thatis identical to the first document fragment of the first document; andreplacing the second document fragment with a reference to a fragmentobject, the fragment object including the set of data corresponding tothe first document fragment of the first document.

In the various methods discussed above, the transformation of thedocument fragment of the source document may be a translation of anoriginal language of the document fragment of the source document into alanguage corresponding to a language of the referencing document, theoriginal language of the document fragment of the source document beingdifferent from the language of the referencing document; a summarizationof the document fragment of the source document; changing a visualcharacteristic of the document fragment of the source document, such asa font, an image size, color, and/or a three-dimensional effect;conversion of the document fragment of the source document intoExtensible Markup Language format; encryption of the document fragmentof the source document; and/or decryption of the document fragment ofthe source document.

It will be appreciated that various of the above-disclosed and otherfeatures and functions, or alternatives thereof, may be desirablycombined into many other different systems or applications. Also thatvarious presently unforeseen or unanticipated alternatives,modifications, variations or improvements therein may be subsequentlymade by those skilled in the art which are also intended to beencompassed by the following claims.

What is claimed is:
 1. A method for generating a document, comprising:(a) accessing a referencing document; (b) invoking a fragment objectreferenced by the referencing document, the fragment object including afirst set of data corresponding to a document fragment of a sourcedocument and a second set of data corresponding to a transformation ofthe document fragment of the source document; (c) transforming thedocument fragment of the source document based on the second set ofdata; (d) incorporating the transformed data into the referencingdocument to generate a document; (e) changing the incorporatedtransformed data of the referencing document; and (f) modifying thefragment object referenced by the referencing document to include athird set of data, the third set of data corresponding to the change inthe incorporated transformed data of the referencing document.
 2. Themethod as claimed in claim 1, wherein the transformation of the documentfragment of the source document is a translation of an original languageof the document fragment of the source document into a languagecorresponding to a language of the referencing document, the originallanguage of the document fragment of the source document being differentfrom the language of the referencing document.
 3. The method as claimedin claim 1, wherein the transformation of the document fragment of thesource document is a summarization of the document fragment of thesource document.
 4. The method as claimed in claim 1, wherein thetransformation of the document fragment of the source document is achanging a visual characteristic of the document fragment of the sourcedocument.
 5. The method as claimed in claim 4, wherein the changedvisual characteristic of the document fragment is a font.
 6. The methodas claimed in claim 4, wherein the changed visual characteristic of thedocument fragment is size.
 7. The method as claimed in claim 4, whereinthe changed visual characteristic of the document fragment is color. 8.The method as claimed in claim 4, wherein the changed visualcharacteristic of the document fragment is a three-dimensional effect.9. The method as claimed in claim 1, wherein the transformation of thedocument fragment of the source document is a conversion of the documentfragment of the source document into Extensible Markup Language format.10. The method as claimed in claim 1, wherein the transformation of thedocument fragment of the source document is an encryption of thedocument fragment of the source document.
 11. The method as claimed inclaim 1, wherein the transformation of the document fragment of thesource document is a decryption of the document fragment of the sourcedocument.
 12. The method as claimed in claim 1, wherein the first set ofdata includes a criterion corresponding to a location of the documentfragment of the source document within a repository.
 13. The method asclaimed in claim 1, wherein the first set of data includes an addresscorresponding to a location of the document fragment of the sourcedocument.
 14. A method for generating a document, comprising: (a)accessing a referencing document; (b) invoking a fragment objectreferenced by the referencing document, the fragment object including afirst set of data corresponding to a document fragment of a sourcedocument and a second set of data corresponding to a transformation ofthe document fragment of the source document; (c) determining the formatof the referencing document based on the second set of data; (d)transforming the document fragment of the source document to correspondto the determined format of the referencing document; and (e)incorporating the transformed document fragment of the source documentinto the referencing document to generate a document.
 15. The method asclaimed in claim 14, wherein the transformation of the document fragmentof the source document further translates an original language of thedocument fragment of the source document into a language correspondingto a language of the referencing document, the original language of thedocument fragment of the source document being different from thelanguage of the referencing document.
 16. The method as claimed in claim14, wherein the transformation of the document fragment of the sourcedocument further changes a font characteristic of the document fragmentof the source document.
 17. The method as claimed in claim 14, whereinthe transformation of the document fragment of the source documentfurther changes a size characteristic of the document fragment of thesource document.
 18. The method as claimed in claim 14, wherein thetransformation of the document fragment of the source document furtherchanges a color characteristic of the document fragment of the sourcedocument.
 19. The method as claimed in claim 14, wherein thetransformation of the document fragment of the source document furtherencrypts the document fragment of the source document.
 20. The method asclaimed in claim 14, wherein the transformation of the document fragmentof the source document further decrypts the document fragment of thesource document.